# and 与
print(True and 3 == 3 and 3 > 1)  # 全True才为True
"""
特殊的短路运算：当and左右为数字或者字符串时，0和空串相当于False
当左边为True时输出右边的数字或者字符串，
当左边为False时直接输出左边
"""
print(0 and 4 and 3)
print(1 and 0 and 3)  # 输出都为0
# or 或
print(True or False)  # 全False才为False
"""
特殊的短路运算：与and类似，但略有不同
当or左右皆为数字或字符串时，直接输出首个相当于True的字符串或数字
"""
print(2024 or 2025 or 0)  # 2024
print(0 or "" or 2025 or 2024)  # 2025

# not 非
print(not True)  # False
print(not False)  # True
print(not "")  # True
print(not 2024)  # False

# 优先级 not > and >or
print("--------------")
print(1 or 0 and 2)  # 1
print(1 or (0 and 2))  # 1
print((1 or 0) and 2)  # 2